using TMPro;
using UnityEngine;
using UnityEngine.UI;

public class LoginPanel : BasePanel
{
    //按钮
    public Button buttonRegister;
    public Button buttonSure;
    //输入框
    public TMP_InputField inputUN;
    public TMP_InputField inputPS;
    //勾选框
    public Toggle toogleRememberPS;
    public Toggle toogleAutoLogin;



    public override void Init()
    {
        //点击注册
        buttonRegister.onClick.AddListener(() =>
        {
            //显示注册面板
            UIManager.Instance.ShowPanel<RegisterPanel>();
            //隐藏自己
            UIManager.Instance.HidePanel<LoginPanel>();
        });
        //点击确定
        buttonSure.onClick.AddListener(() =>
        {
            //验证用户名密码是否正确
            if (LoginManager.Instance.CheckInfo(inputUN.text, inputPS.text))
            {
                //登录成功

                //记录登录数据
                LoginManager.Instance.LoginData.userName = inputUN.text;
                LoginManager.Instance.LoginData.passWord = inputPS.text;
                LoginManager.Instance.LoginData.isAutoLogin = toogleAutoLogin.isOn;
                LoginManager.Instance.LoginData.isRememberPS = toogleRememberPS.isOn;
                LoginManager.Instance.SaveLoginData();

                //根据服务器信息进行判断，显示哪个面板
                if (LoginManager.Instance.LoginData.serverId < 1)
                {
                    //如果记录的服务器ID<1，那么表示没有进行过选择，所以打开选服面板
                    UIManager.Instance.ShowPanel<ChooseServerPanel>();
                }
                else
                {
                    //否则，打开服务器面板
                    UIManager.Instance.ShowPanel<ServerPanel>();

                }
                //隐藏自己
                UIManager.Instance.HidePanel<LoginPanel>();

            }
            else
            {
                //登录失败
                // TipPanel tipPanel = UIManager.Instance.ShowPanel<TipPanel>();
                // tipPanel.ChangeTipsText("账号或密码错误");
                //简洁写法：原因：因为返回值是TipPanel，所以可以直接调用TipPanel的方法ChangeTipsText。
                UIManager.Instance.ShowPanel<TipPanel>().ChangeTipsText("账号或密码错误");

            }
        });
        //点击记住密码
        toogleRememberPS.onValueChanged.AddListener((isOn) =>
        {
            //当取消记住密码时，自动登录也取消
            if (!isOn)
            {
                toogleAutoLogin.isOn = false;
            }
        });
        //点击自动登录
        toogleAutoLogin.onValueChanged.AddListener((isOn) =>
        {
            //如果勾选自动登录，那么自动勾选记住密码
            if (isOn)
            {
                toogleRememberPS.isOn = true;
            }
            //自动登录逻辑

        });
    }
    public override void ShowMe()
    {
        base.ShowMe();
        //得到数据
        LoginData loginData = LoginManager.Instance.LoginData;
        //初始化面板显示
        toogleRememberPS.isOn = loginData.isRememberPS;
        toogleAutoLogin.isOn = loginData.isAutoLogin;
        //账号默认为上一次的输入
        inputUN.text = loginData.userName;
        //密码根据设置来决定是否填写
        if (toogleRememberPS.isOn)
            inputPS.text = loginData.passWord;
        if (toogleAutoLogin.isOn)
        {
            //自动验证账户密码相关
            if (LoginManager.Instance.CheckInfo(inputUN.text, inputPS.text))
            {
                //根据服务器信息进行判断，显示哪个面板
                if (LoginManager.Instance.LoginData.serverId < 1)
                {
                    //如果记录的服务器ID<1，那么表示没有进行过选择，所以打开选服面板
                    UIManager.Instance.ShowPanel<ChooseServerPanel>();
                }
                else
                {
                    //否则，打开服务器面板
                    UIManager.Instance.ShowPanel<ServerPanel>();

                }
                //隐藏自己
                UIManager.Instance.HidePanel<LoginPanel>();
            }
            else
            {
                UIManager.Instance.ShowPanel<TipPanel>().ChangeTipsText("账号或密码错误");
            }

        }
    }
    /// <summary>
    /// 提供给外部调用的，快速设置输入框用户名和密码的方法
    /// </summary>
    /// <param name="userName"></param>
    /// <param name="passWord"></param>
    public void SetInfo(string userName, string passWord)
    {
        inputUN.text = userName;
        inputPS.text = passWord;
    }
}
